﻿#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <tuple>
using namespace std;
void test1()
{
	// 创建⼀个包含3个元素的tuple: int, double, string
	std::tuple<int, double, std::string> t1(10, 3.14, "hello");
	// 使⽤make_tuple⾃动推导类型
	auto t2 = std::make_tuple(20, 2.718, "world");
	// C++17起可以使⽤类模板参数推导
	std::tuple t3(30, 1.618, "cpp"); // ⾃动推导为tuple<int, double, const char* > 
	//如果要推导为string类型可以用
	std::tuple t4(30, 1.618, std::string("cpp"));
}
int main()
{
	std::tuple<int, double, std::string> t1(10, 3.14, "hello");
	// 通过索引访问
	std::cout << std::get<0>(t1) << std::endl; // 输出10
	std::cout << std::get<1>(t1) << std::endl; // 输出3.14
	std::cout << std::get<2>(t1) << std::endl << std::endl; // 输出"hello"
	// 修改
	std::get<0>(t1) = 100; // 修改第⼀个元素
	// C++14起可以通过类型访问(类型必须唯⼀)
	std::cout << std::get<int>(t1) << std::endl; // 输出100
	std::cout << std::get<double>(t1) << std::endl; // 输出3.14
	return 0;
}